Networking এবং HTTP Requests এর জন্য clj-http এর ব্যবহার

Computer Programming - ক্লোজার (Clojure) Input/Output (I/O in Clojure) |
210
210

Networking এবং HTTP Requests এর জন্য clj-http এর ব্যবহার

Clojure একটি ফাংশনাল প্রোগ্রামিং ভাষা, এবং এর মধ্যে নেটওয়ার্কিং ও HTTP রিকোয়েস্ট ম্যানেজ করার জন্য clj-http লাইব্রেরি খুবই জনপ্রিয়। clj-http হল একটি HTTP ক্লায়েন্ট লাইব্রেরি যা Clojure-এ সহজভাবে HTTP রিকোয়েস্ট পাঠাতে এবং সাড়া গ্রহণ করতে সহায়ক। এটি মূলত Apache HttpClient এর উপর ভিত্তি করে তৈরি, এবং Clojure-এ HTTP যোগাযোগের জন্য সরল, কিন্তু শক্তিশালী একটি ইন্টারফেস প্রদান করে।

১. clj-http ইনস্টলেশন

ক্লোজারে clj-http ব্যবহার করতে হলে প্রথমে এটি আপনার প্রজেক্টে অন্তর্ভুক্ত করতে হবে। lein বা deps.edn ব্যবহার করে আপনি এটি ইনস্টল করতে পারেন।

lein এর মাধ্যমে ইনস্টলেশন:

project.clj ফাইলে clj-http কে ডিপেন্ডেন্সি হিসেবে যুক্ত করুন:

(defproject my-project "0.1.0-SNAPSHOT"
  :dependencies [[clj-http "3.12.3"]])

এখানে clj-http এর সংস্করণ চেক করতে হবে এবং সঠিক সংস্করণ নির্বাচন করতে হবে।

deps.edn এর মাধ্যমে ইনস্টলেশন:

deps.edn ফাইলে ডিপেন্ডেন্সি যুক্ত করতে:

{:deps {clj-http {:mvn/version "3.12.3"}}}

২. clj-http ব্যবহার করার মূল ধারণা

clj-http এ HTTP রিকোয়েস্ট পাঠাতে clj-http.client নামস্পেসের ফাংশনগুলো ব্যবহার করা হয়। সাধারণত HTTP রিকোয়েস্ট পাঠাতে দুটি মূল ফাংশন ব্যবহৃত হয়: get এবং post

GET Request পাঠানো

GET রিকোয়েস্ট HTTP এর অন্যতম সাধারণ রিকোয়েস্ট, যেটি সাধারণত সার্ভার থেকে তথ্য প্রাপ্তির জন্য ব্যবহার হয়।

(require '[clj-http.client :as client])

(def response (client/get "https://jsonplaceholder.typicode.com/posts"))

(println (:status response))  ; আউটপুট: 200
(println (:body response))    ; আউটপুট: JSON ডাটা

এখানে, client/get ফাংশনটি URL থেকে GET রিকোয়েস্ট পাঠায় এবং এর রেসপন্স একটি মানচিত্র (map) আকারে ফেরত দেয়। আপনি রেসপন্সের স্ট্যাটাস কোড এবং বডি থেকে তথ্য বের করতে পারেন।

POST Request পাঠানো

POST রিকোয়েস্ট ব্যবহার করা হয় সার্ভারে তথ্য পাঠানোর জন্য। POST রিকোয়েস্টের সাথে সাধারণত একটি বডি থাকে, যেখানে আপনি ডেটা পাঠাতে পারেন।

(require '[clj-http.client :as client])

(def response (client/post "https://jsonplaceholder.typicode.com/posts"
                           {:form-params {:title "foo"
                                          :body "bar"
                                          :userId 1}}))

(println (:status response))  ; আউটপুট: 201
(println (:body response))    ; আউটপুট: JSON ডাটা

এখানে, client/post ফাংশনটি POST রিকোয়েস্ট পাঠাতে ব্যবহৃত হয়েছে। :form-params ব্যবহার করে আপনি POST রিকোয়েস্টের বডিতে ডেটা পাঠাচ্ছেন।


৩. অতিরিক্ত কনফিগারেশন

clj-http আরও উন্নত কনফিগারেশন এবং হেডার সহ কাজ করতে পারে। যেমনঃ

হেডার ব্যবহার করা

(def response (client/get "https://jsonplaceholder.typicode.com/posts"
                          {:headers {"Authorization" "Bearer my-token"}}))

(println (:status response))  ; আউটপুট: 200

এখানে, Authorization হেডারটি GET রিকোয়েস্টের সাথে পাঠানো হয়েছে।

কাস্টম রিকোয়েস্ট প্যারামিটার

(def response (client/get "https://jsonplaceholder.typicode.com/posts"
                          {:query-params {:userId 1}}))

(println (:status response))  ; আউটপুট: 200

এখানে, :query-params ব্যবহার করে GET রিকোয়েস্টের জন্য কুয়েরি প্যারামিটার পাঠানো হয়েছে, যা URL এর অংশ হিসেবে যুক্ত হবে।

JSON রেসপন্স পার্সিং

clj-http JSON রেসপন্সের জন্য খুব সহজভাবে কাজ করতে পারে। আপনি রেসপন্সের বডি থেকে JSON ডাটা পার্স করতে পারছেন cheshire লাইব্রেরি ব্যবহার করে।

(require '[clj-http.client :as client])
(require '[cheshire.core :as json])

(def response (client/get "https://jsonplaceholder.typicode.com/posts"))

(def body (json/parse-string (:body response) true))

(println (first body))  ; আউটপুট: প্রথম JSON অবজেক্ট

এখানে, cheshire.core/parse-string ফাংশনটি JSON বডিকে Clojure ডেটা স্ট্রাকচারে রূপান্তরিত করেছে।


৪. Error Handling

ক্লোজারে clj-http ব্যবহার করার সময় রিকোয়েস্টের ত্রুটি (errors) হ্যান্ডেল করা অত্যন্ত গুরুত্বপূর্ণ। clj-http try এবং catch ব্লক ব্যবহার করে ত্রুটি হ্যান্ডেল করার জন্য উপযুক্ত।

(require '[clj-http.client :as client])

(try
  (def response (client/get "https://jsonplaceholder.typicode.com/invalid-url"))
  (println (:status response))
  (catch Exception e
    (println "Error occurred:" (.getMessage e))))

এখানে, যদি কোনো ত্রুটি ঘটে, তবে catch ব্লকটি সক্রিয় হবে এবং একটি ত্রুটি বার্তা প্রিন্ট করবে।


সারসংক্ষেপ

  • GET রিকোয়েস্ট: client/get ফাংশন ব্যবহার করে API থেকে তথ্য পড়া।
  • POST রিকোয়েস্ট: client/post ফাংশন ব্যবহার করে সার্ভারে তথ্য পাঠানো।
  • হেডার এবং কাস্টম প্যারামিটার: HTTP রিকোয়েস্টের সাথে কাস্টম হেডার এবং কুয়েরি প্যারামিটার পাঠানো।
  • JSON পার্সিং: cheshire লাইব্রেরি দিয়ে JSON রেসপন্স পার্স করা।
  • Error Handling: HTTP রিকোয়েস্টে ত্রুটি হ্যান্ডেল করা।

clj-http হল Clojure-এ HTTP রিকোয়েস্ট এবং রেসপন্স ম্যানেজ করার জন্য একটি খুব শক্তিশালী এবং সহজ ব্যবহারযোগ্য লাইব্রেরি।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion